subroutine print_sim_obj(nunit)
  use param
  use table_param,only:sim_obj
  use table_param,only:n_sim_obj
  use table_param,only:total_alloc_sim_obj
  use label_data_param,only:obj_type
  implicit none

  integer,intent(in) :: nunit
  
  integer :: i,j,in1,in2,in3,pos1,pos2,width,n
  character(len=len_linebuf) :: str
  
  in1=1
  in2=2
  in3=3
  width=71

  call log_msg1(nunit,"")
  call log_msg1(nunit,"List of simulated object")
  call log_msg1(nunit,"")

  pos1=0
  pos2=pos1+16
  write(str(pos1+1:pos2),'("n_sim_obj=",i6)') n_sim_obj
  pos1=pos2
  call log_msg1_indent(nunit,in1,str(1:pos2))

  ! Draw the header
  call drawline(nunit,in1,width)
  pos1=0

  pos2=pos1+9
  write(str(pos1+1:pos2),'("index",4x)')
  pos1=pos2

  pos2=pos1+11
  write(str(pos1+1:pos2),'("label",6x)') 
  pos1=pos2

  pos2=pos1+14
  write(str(pos1+1:pos2),'("pos[1]",8x)')
  pos1=pos2

  pos2=pos1+14
  write(str(pos1+1:pos2),'("pos[2]",8x)')
  pos1=pos2

  pos2=pos1+14
  write(str(pos1+1:pos2),'("pos[3]",8x)')
  pos1=pos2

  pos2=pos1+3
  write(str(pos1+1:pos2),'("dx",1x)')
  pos1=pos2

  pos2=pos1+3
  write(str(pos1+1:pos2),'("dy",1x)')
  pos1=pos2

  pos2=pos1+3
  write(str(pos1+1:pos2),'("dz")')

  call log_msg1_indent(nunit,in1,str(1:pos2))
  call drawline(nunit,in1,width)

  n=0
  do i=1,total_alloc_sim_obj

     if (n.eq.n_sim_obj) exit

     if (sim_obj(i)%removed) cycle

     n=n+1

     pos1=0

     ! id
     pos2=pos1+8
     write(str(pos1+1:pos2),'("[",i6.6,"]")') i
     pos1=pos2

     ! label
     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') &
          obj_type(sim_obj(i)%object_type)%name
     pos1=pos2

     ! position
     do j=1,3
        pos2=pos1+14
        write(str(pos1+1:pos2),'(1x,1pe13.5)') &
             sim_obj(i)%pos(j)
        pos1=pos2
     end do

     ! alignment
     do j=1,3
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,spi2)') &
             int(sim_obj(i)%vec(j))
        pos1=pos2
     end do

     call log_msg1_indent(nunit,in1,str(1:pos2))

  end do

  call drawline(nunit,in1,width)

  return

end subroutine print_sim_obj
